/** Behavior macro defination.
 *
 *  This file define some useful behavior macro. The type macro will be defined by another file.
 *  Basic macro will contain many things we will use in our coding.
 *
 *  @author : huicong
 *  @date : 2008-10-26
 *
 */

#ifndef _BASIC_MACRO_H
#define _BASIC_MACRO_H

/** Function parameter restriction. 
 *
 *  Function parameter restriction. You must define function as :
 *  @code void myFunction(IN int a, OUT int &b, INOUT int &c);
 *
 */
/** IN type parameter must be const and will not be notified by function. */
#define IN const
/** _IN type parameter will no be const and will not be notified by function. */
#define _IN
/** OUT type parameter will be notified by function and has no information at beginning. */
#define OUT
/** INOUT type parameter will be notified by function and will contain information at beginning. */
#define INOUT

/** Virtual class identifier. */
#define VIRTUAL_CLASS

/** Test whether the handled result is failed. */
#define FAILED(hr) (hr < 0)

#define LOGFILE_PRE "bcmi_frame.log"

#define __FRAME_INI_TASK_NAME "___bcmi_frame_initialize_task__"
#define __FRAME_FIN_TASK_NAME "___bcmi_frame_finalize_task__"

#endif //#ifndef _BASIC_MACRO_H